import { defineConfig } from 'vite'
import { fileURLToPath, URL } from 'node:url'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
 
let config
const moduleName = process.env['npm_config_project'] // 使用`--project=[module_name]`获取模块名
if (!moduleName) {
  // 构建父模块
  config = {
    plugins: [vue()],
    resolve: {
      alias: {
        // 为`vite.config.ts`文件所在目录起别名`@`
        '@': resolve(__dirname, './'),
      }
    },
  }
} else {
  // 构建子模块
  config = {
    plugins: [vue()],
    root: `./src/apps/${moduleName}`,
    resolve: {
      alias: {
        // 为`vite.config.ts`文件所在的目录起别名`@`和`$`，二者作用效果是一样的
        // 使用方式一：@/public @/src @/src/components @/src/plugins ...
        // 使用方式二：$/public $/src @/src/components $/src/plugins ...
        '@': resolve(__dirname, './'),
        '$': fileURLToPath(new URL('./', import.meta.url)),
      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@import "$/public/scss/mixin.scss";` // 引入scss全局动态样式
        }
      }
    },
    build: {
      // https://cn.vitejs.dev/guide/build.html
      rollupOptions: {
        input: resolve(__dirname, `src/apps/${moduleName}/index.html`), // 指定子模块入口文件
        output: {
          dir: `dist/apps/${moduleName}`
        }
      }
    }
  }
}
 
// https://vitejs.dev/config/
export default defineConfig(config)
